"""
使用bs4解析数据
1，构造bs4对象
2，搜索节点
    1）通过find_all,find等操作方法搜索节点
    2）通过css选择器搜索
3，获取节点内容
    get_text()
"""
import requests
from bs4 import BeautifulSoup

# 1,；利用requests爬取百度首页，保存在文件baidu。html
# 爬取网页：1）是否需要登录才能爬取（可以利用cookie或session实现）
#         2）get请求还是post请求（post请求需要请求体数据）


url = 'https://www.baidu.com/'
# 构造字典（请求头）
h = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'
}
# GET 请求：url；包含User—agent的请求头
r = requests.get(url, headers=h)
# 将数据写入文件
with open('baidu.html', 'w', encoding='utf-8') as f:
    f.write(r.content.decode())
# 2,利用bs4解析baidu.html文件
# 1）构造bs4对象。参数1：要解析的文本 参数2：解析器
soup = BeautifulSoup(r.content.decode(), 'lxml')
# 2)利用finad_all,find方法搜索节点/标签
print('--------搜索所有的a标签--------')
result1 = soup.find_all('a')
print(result1)
print('---------搜索第一个a标签--------')
result2 = soup.find('a')
print(result2)
print('-------搜索所有的a标签和img标签，结果保留三条记录------')
result3 = soup.find_all(['a', 'img'], limit=3)
print(result3)
print('--------搜索a标签，以及特殊属性值-------')
result4 = soup.find_all('a', {'class': 'mnav c-font-normal c-color-t'})
for e in result4:
    print(e)
# 2) 利用css选择器搜索
print('---------用select搜索title标签------')
r1 = soup.select('title')
print(r1)
print('--------搜索标签名为li类名为hotsearch-item--------')
r2 = soup.select('li.hotsearch-item')
for e in r2:
    print(e.get_text())
